]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensions: Add static lookupByUUID() method
authorFlorian Müllner <fmuellner@gnome.org>
Mon, 10 Jul 2023 08:33:31 +0000 (10:33 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Sun, 30 Jul 2023 07:29:44 +0000 (10:29 +0300)
This allows the Extension/Preferences classes to provide
the UUID -> extension lookup without exposing the underlying
extension manager.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2838>

js/extensions/extension.js
js/extensions/prefs.js
js/extensions/sharedInternals.js

index bcc518edd78f4e0be5bd76fbcd6faa1f62066985..cdbc33da75e51dbe675d1a30daac8007f0191303 100644 (file)
@@ -4,6 +4,10 @@ const {extensionManager} = imports.ui.main;
 setExtensionManager(extensionManager);
 
 export class Extension extends ExtensionBase {
+    static lookupByUUID(uuid) {
+        return extensionManager.lookup(uuid)?.stateObj ?? null;
+    }
+
     static defineTranslationFunctions(url) {
         const wrapper = new GettextWrapper(this, url);
         return wrapper.defineTranslationFunctions();
index 5d2de3f987fe3cdb5f91bd917b69ecdc659a8a0a..ab0a74dd25af47dede72f8ce7d7e30295fcd0476 100644 (file)
@@ -6,6 +6,10 @@ import {extensionManager} from '../extensionsService.js';
 setExtensionManager(extensionManager);
 
 export class ExtensionPreferences extends ExtensionBase {
+    static lookupByUUID(uuid) {
+        return extensionManager.lookup(uuid)?.stateObj ?? null;
+    }
+
     static defineTranslationFunctions(url) {
         const wrapper = new GettextWrapper(this, url);
         return wrapper.defineTranslationFunctions();
index dcac3c23310188a823f316e083583abc7fac2f31..ac6d035a84706d424a585a2873b6bfe7226ef52f 100644 (file)
@@ -1,5 +1,6 @@
 import Gio from 'gi://Gio';
 import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
 
 import {bindtextdomain} from 'gettext';
 
@@ -38,14 +39,23 @@ export class ExtensionBase {
             path = GLib.path_get_dirname(path);
 
             const dirName = GLib.path_get_basename(path);
-            const extension = _extensionManager.lookup(dirName);
+            const extension = this.lookupByUUID(dirName);
             if (extension !== undefined)
-                return extension.stateObj;
+                return extension;
         } while (path !== '/');
 
         return null;
     }
 
+    /**
+     * Look up an extension by UUID
+     *
+     * @param {string} _uuid
+     */
+    static lookupByUUID(_uuid) {
+        throw new GObject.NotImplementedError();
+    }
+
     /**
      * @param {object} metadata - metadata passed in when loading the extension
      */